      FXCellIterator    C:\Users\KatachiHome\AppData\Roaming\MAXON\CINEMA 4D R13_05DFD2A0\plugins\DPIT Plants & Effex 2.0\res\help\EN\Effex\fx_api_classes_fxscalarcelliterator.html   b        '                                                                                                                                                               A   default.tif    
              Object Header   The FXCellIterator grants browse, read & write access to grid cells of a specific channel or volume.
<br>It natively supports multiple processors so you don't have to worry about it yourself.
<br></br>
There are three different iterator types:<br>
FXScalarCellIterator (for any scalar channel)<br>
FXVectorCellIterator (for any vector channel)<br>
FXVolumeCellIterator (for volumes)<br>
</br>
The below definitions are displayed as if it was a class template although the specific classes are NOT accessed as a template.<br>
It is just for convenience because all available cell iterators have the same interface definitions.
<br></br>
The template typenames are T and C, while T represents the datatype (double or vector3d) and C is the node type (FXScalarChannel, FXVectorChannel or FXVolume)           )[code]typename T GetValue(const int cpu)    Retrieves the value stored in the current cell.
<br></br>
<b>Returns</b><br>
the cell value. T is either double (FXScalarChannel, FXVolume) or vector3d (FXVectorChannel)
<br></br>
<b>Parameters</b><BR>
<i>const int cpu</i>: <br>
the current cpu thread.                   L[code]typename T GetNeighborValue(const int cpu, short x, short y, short z)   <b>Returns</b><br>
the cell value of a neighboring cell. Either double (FXScalarChannel, FXVolume) or vector3d (FXVectorChannel)
<br></br>
<b>Parameters</b><BR>
<i>const int cpu</i>: <br>
the current cpu thread.
<br></br>
<i>short x</i>: <br>
either 1 or -1 for the right or left neighbor cell respectively.
<br></br>
<i>short y</i>: <br>
either 1 or -1 for the top or bottom neighbor cell respectively.
<br></br>
<i>short z</i>: <br>
either 1 or -1 for the back or front neighbor cell respectively.                   <[code]void SetValue(const int cpu, const typename T& value)    Overwrites the current cell's value.
<br></br>
<b>Parameters</b><BR>
<i>const int cpu</i>: <br>
the current cpu thread.
<br></br>
<i>const T& value</i>: <br>
the new cell value. T is either double (FXScalarChannel, FXVolume) or vector3d (FXVectorChannel)                   %[code]bool Init(typename C* channel)   Initialise the iterator for a specific channel and for single processor use.
<br></br>
<b>Returns</b><br>
true if the iterator was successfully initialised.
<br></br>
<b>Parameters</b><BR>
<i>C* channel</i>: <br>
the node to initialise the iterator for. C can be a FXScalarChannel, a FXVectorChannel or a FXVolume
depending on the type of this iterator (FXScalarCellIterator, FXVectorCellIterator or FXVolumeCellIterator respectively).                   M[code]bool Init(typename C* channel, int cpus, bool include_borders = false)   Initialise the iterator for a specific channel and for multiple processor usage.
<br></br>
<b>Returns</b><br>
true if the iterator was successfully initialised.
<br></br>

<b>Parameters</b><BR>
<i>C* channel</i>: <br>
Pass the node to initialise the iterator for. C can be a FXScalarChannel, a FXVectorChannel or a FXVolume
depending on the type of this iterator (FXScalarCellIterator, FXVectorCellIterator or FXVolumeCellIterator respectively).
<br></br>
<i>int cpus</i>: <br>
Pass the amount of cpu threads you will be using for iterating cells.
<br></br>
<i>bool include_borders</i>: <br>
Specifies if you want to also browse the outermost border cells. By default it does not.                   =[code]inline void Start(const int cpu, bool reverse = false)   ?This will reset the iterator for the given cpu.
<br>You should call this once before browsing in a multiprocessor context.
<br></br>
<b>Parameters</b><BR>
<i>const int cpu</i>: <br>
Pass the cpu thread to reset the iterator for.
<br></br>
<i>bool reverse</i>: <br>
Pass true if you want to reverse iterate (backwards).                   )[code]inline bool SetNext(const int cpu)    Steps the iterator to get the next cell. Use for forward stepping.
<br></br>
<b>Returns</b><br>
true if the iterator has been incremented.
<br></br>
<b>Parameters</b><BR>
<i>const int cpu</i>: <br>
the current cpu thread to increment the iterator for.                   )[code]inline bool SetPrev(const int cpu)   Steps the iterator to get the previous cell. Use for backward stepping.
<br></br>
<b>Returns</b><br>
true if the iterator has been decremented.
<br></br>
<b>Parameters</b><BR>
<i>const int cpu</i>: <br>
the current cpu thread to decrement the iterator for.               	    &[code]inline void Offset(long offset)   Offsets the iterator to a user defined position. This is only used for single processor iterations!
<br>You need to make sure yourself the resulting iterator position is valid.
<br></br>
<b>Parameters</b><BR>

<i>const long offset</i>: <br>
the iterator cell offset.               
    *[code]inline void OffsetSafe(long offset)   Offsets the iterator to a user defined position. This is only used for single processor iterations!
<br>It will make sure the iterator never falls out of range (trades of performance though).
<br></br>
<b>Parameters</b><BR>

<i>const long offset</i>: <br>
the iterator cell offset.                   &[code]inline bool IsValid(void) const    :<b>Returns</b><br>
true if the current iterator is valid.                   %[code]static FXCellIterator* Alloc()    Allocates the iterator. You can use AutoAlloc for a scope based allocation.
<br>Works the same for FXVectorCellIterator and FXVolumeCellIterator.
<br></br>
<b>Returns</b><br>
the according Cell iterator. The user owns the pointed object.               
   +[code]static void Free(FXCellIterator*& p)    Frees a previously allocated Cell Iterator..
<br></br>
<b>Parameters</b><BR>
<i>FXCellIterator*&</i>: <br>
Pass the Cell iterator to free.                                                             	      
   	      
         
   